The present invention relates to system analysis, and more specifically, this invention relates to improving system performance while running a software program.
One of the most powerful methods for understanding how a system functions is tracing. In its essence, tracing is a process of collecting records from the strategically placed trace points in the code when a processor executes them.
Tracing may provide an insightful view inside of a production system. But the overhead caused by tracing may be prohibitive. For example, forming the trace records may add CPU overhead. Also, storing trace records in RAM may require both RAM bandwidth and space. Further, long traces may have to be written to the disk, which may use I/O bandwidth and disk space. Finally, in a distributed setup, traces may need to be transferred to other nodes for analysis, which may consume network bandwidth.